Grid Layout এবং Row/Column Definition

Microsoft Technologies - ডব্লিউপিএফ (WPF) - WPF Layouts এবং Panels
293

Grid Layout WPF (Windows Presentation Foundation)-এ একটি অত্যন্ত শক্তিশালী এবং ফ্লেক্সিবল লেআউট কন্ট্রোল, যা UI উপাদানগুলিকে সেল বা কলামে সাজানোর জন্য ব্যবহৃত হয়। Grid কন্ট্রোলের মাধ্যমে আপনি সহজেই লেআউট ম্যানেজ করতে পারেন এবং এটি আপনাকে একাধিক সারি (Rows) এবং কলাম (Columns) ব্যবহার করে কন্ট্রোলগুলিকে সঠিকভাবে অবস্থান করতে সাহায্য করে।

Grid Layout এর মৌলিক ধারণা

Grid Layout একটি টেবিলের মতো কাজ করে, যেখানে আপনি UI উপাদানগুলিকে Rows এবং Columns এ সজ্জিত করতে পারেন। এটি আপনাকে আরও সহজে UI কন্ট্রোলগুলির অবস্থান এবং আকার নির্ধারণ করতে সক্ষম করে।

Grid কন্ট্রোলের গঠন (Structure of Grid Layout)

<Grid>
    <!-- Row Definitions -->
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <!-- Column Definitions -->
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

    <!-- UI Elements -->
    <Button Content="Button 1" Grid.Row="0" Grid.Column="0"/>
    <Button Content="Button 2" Grid.Row="1" Grid.Column="1"/>
    <Button Content="Button 3" Grid.Row="2" Grid.Column="2"/>
</Grid>

এখানে, একটি Grid কন্ট্রোল তৈরি করা হয়েছে, যার মধ্যে তিনটি সারি এবং তিনটি কলাম রয়েছে। বিভিন্ন UI উপাদান Grid.Row এবং Grid.Column অ্যাট্রিবিউট ব্যবহার করে নির্দিষ্ট সারি এবং কলামে সজ্জিত করা হয়েছে।


Row/Column Definition

RowDefinitions এবং ColumnDefinitions হল Grid কন্ট্রোলের দুটি মূল অংশ, যা সারি এবং কলামের আকার এবং আচরণ নির্ধারণ করে।

RowDefinitions

RowDefinitions আপনাকে Grid-এর মধ্যে সারি তৈরি করার জন্য সহায়তা করে। প্রতিটি সারি একটি RowDefinition উপাদান দ্বারা প্রতিনিধিত্ব করা হয়।

  • Height প্রপার্টি ব্যবহার করে সারির উচ্চতা নির্ধারণ করা হয়।
    • Auto: সারিটি কন্টেন্টের প্রস্থ অনুসারে আকার নেবে।
    • *: এটি স্ক্যালেবল হবে, বা বাকি স্থান ভাগাভাগি করবে।
    • নির্দিষ্ট সংখ্যা (যেমন, 200): নির্দিষ্ট উচ্চতা।

ColumnDefinitions

ColumnDefinitions আপনাকে Grid-এর মধ্যে কলাম তৈরি করতে সহায়তা করে। প্রতিটি কলাম একটি ColumnDefinition উপাদান দ্বারা প্রতিনিধিত্ব করা হয়।

  • Width প্রপার্টি ব্যবহার করে কলামের প্রস্থ নির্ধারণ করা হয়।
    • Auto: কলামটি কন্টেন্টের প্রস্থ অনুযায়ী আকার নেবে।
    • *: এটি স্ক্যালেবল হবে এবং বাকি স্থান ভাগাভাগি করবে।
    • নির্দিষ্ট সংখ্যা (যেমন, 100): নির্দিষ্ট প্রস্থ।

Row/Column Definition উদাহরণ

1. সারি এবং কলাম সংজ্ঞায়িত করা

<Grid>
    <!-- Row Definitions -->
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/> <!-- First Row, Auto height -->
        <RowDefinition Height="*"/>    <!-- Second Row, takes remaining space -->
        <RowDefinition Height="200"/>  <!-- Third Row, fixed height -->
    </Grid.RowDefinitions>

    <!-- Column Definitions -->
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/> <!-- First Column, Auto width -->
        <ColumnDefinition Width="*"/>    <!-- Second Column, takes remaining space -->
        <ColumnDefinition Width="200"/>  <!-- Third Column, fixed width -->
    </Grid.ColumnDefinitions>

    <!-- UI Elements -->
    <TextBlock Text="Row 1, Column 1" Grid.Row="0" Grid.Column="0" Background="LightBlue"/>
    <TextBlock Text="Row 2, Column 2" Grid.Row="1" Grid.Column="1" Background="LightGreen"/>
    <TextBlock Text="Row 3, Column 3" Grid.Row="2" Grid.Column="2" Background="LightCoral"/>
</Grid>

এখানে:

  • প্রথম সারিটি Auto উচ্চতায় সজ্জিত করা হয়েছে, অর্থাৎ এটি কন্টেন্টের আকার অনুসারে প্রসারিত হবে।
  • দ্বিতীয় সারিটি * (স্টার) উচ্চতা ব্যবহার করছে, যা বাকি সমস্ত স্থান ভাগ করবে।
  • তৃতীয় সারিটি একটি নির্দিষ্ট উচ্চতা (২০০ পিক্সেল) ধারণ করে।
  • প্রথম কলামটি Auto প্রস্থে রয়েছে, অর্থাৎ এটি কন্টেন্ট অনুযায়ী আকার নেবে।
  • দ্বিতীয় কলামটি * প্রস্থে রয়েছে, যা বাকি স্থান ভাগ করবে।
  • তৃতীয় কলামটি ২০০ পিক্সেল প্রস্থে রয়েছে।

2. Grid কন্ট্রোলের মধ্যে কন্ট্রোল সজ্জিত করা

<Grid>
    <!-- Row Definitions -->
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <!-- Column Definitions -->
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

    <!-- UI Elements -->
    <Button Content="Button 1" Grid.Row="0" Grid.Column="0" Margin="10"/>
    <Button Content="Button 2" Grid.Row="1" Grid.Column="0" Margin="10"/>
    <TextBox Grid.Row="0" Grid.Column="1" Margin="10"/>
</Grid>

এখানে:

  • প্রথম কলামটি * প্রস্থে সজ্জিত করা হয়েছে, এবং দ্বিতীয় কলামটি Auto প্রস্থে সজ্জিত করা হয়েছে।
  • প্রথম সারি Auto উচ্চতায় এবং দ্বিতীয় সারি * (স্টার) উচ্চতায় রয়েছে।
  • Button 1 প্রথম কলামে এবং প্রথম সারিতে রয়েছে।
  • Button 2 প্রথম কলামে এবং দ্বিতীয় সারিতে রয়েছে।
  • TextBox দ্বিতীয় কলামে এবং প্রথম সারিতে রয়েছে।

Grid Layout এর অ্যাডভান্সড টেকনিক

1. Span Across Rows and Columns

কোনও UI উপাদানকে একাধিক সারি বা কলামে প্রসারিত করতে Grid.RowSpan এবং Grid.ColumnSpan প্রপার্টি ব্যবহার করা যেতে পারে।

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <!-- UI Elements -->
    <TextBlock Text="I Span Across Two Columns" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"/>
    <Button Content="Button" Grid.Row="1" Grid.Column="1"/>
</Grid>

এখানে, TextBlock দুটি কলাম জুড়ে প্রসারিত হচ্ছে Grid.ColumnSpan="2" দ্বারা, এবং বাকি বাটনটি এক কলামে থাকবে।

2. Dynamic Row and Column Sizing

এটি অ্যাপ্লিকেশনের UI এর সাইজিং কন্ট্রোল করতে সাহায্য করে। বিশেষত, আপনি যদি অ্যাপ্লিকেশনের ভিউপোর্টের আকার অনুসারে লেআউট কন্ট্রোলগুলির সাইজ অটোমেটিকভাবে পরিবর্তন করতে চান, তবে * স্টার প্রোপার্টি ব্যবহার করা উচিত।

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="2*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <!-- UI Elements -->
    <Button Content="Button 1" Grid.Row="0" Grid.Column="0"/>
    <Button Content="Button 2" Grid.Row="1" Grid.Column="0"/>
    <TextBox Grid.Row="2" Grid.Column="1"/>
</Grid>

এখানে, দ্বিতীয় সারি প্রথম সারির তুলনায় দ্বিগুণ বড় হবে কারণ এতে 2* প্রস্থ দেয়া হয়েছে।


সারাংশ (Summary)

  • Grid Layout WPF অ্যাপ্লিকেশনের জন্য একটি অত্যন্ত শক্তিশালী লেআউট কন্ট্রোল, যা UI উপাদানগুলোকে সারি এবং কলামে সজ্জিত করতে ব্যবহৃত হয়।
  • RowDefinitions এবং ColumnDefinitions এর মাধ্যমে সারি এবং কলামের আকার এবং আচরণ নির্ধারণ করা হয়।
  • Grid.Row এবং Grid.Column প্রপার্টি ব্যবহার করে কন্ট্রোলগুলিকে নির্দিষ্ট সারি এবং কলামে রাখা যায়।
  • RowSpan এবং ColumnSpan ব্যবহার করে কন্ট্রোলগুলিকে একাধিক সারি এবং কলামে প্রসারিত করা যায়।
  • Grid লেআউট কন্ট্রোলের মাধ্যমে জটিল এবং ডাইনামিক ইউআই তৈরি করা সম্ভব

, যা প্রতিটি কন্ট্রোলের স্থান এবং আকার সঠিকভাবে নির্ধারণ করতে সহায়তা করে।

WPF অ্যাপ্লিকেশনে Grid Layout এবং Row/Column Definition ব্যবহার করে আপনি একটি শক্তিশালী, ফ্লেক্সিবল এবং রেসপন্সিভ UI তৈরি করতে পারবেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...